namespace bga
{

template< typename T >
Point3<T>::Point3() : Tuple<3, T>()
{

}

template< typename T >
Point3<T>::Point3(const Point3& point3) : Tuple<3, T>(point3)
{

}

template< typename T >
Point3<T>::Point3(T x, T y, T z)
{
    this->arrayValues[0] = x;
    this->arrayValues[1] = y;
    this->arrayValues[2] = z;
}

template< typename T >
Point3<T>::~Point3()
{

}

template< typename T >
void Point3<T>::setXYZ(T x, T y, T z)
{
    this->arrayValues[0] = x;
    this->arrayValues[1] = y;
    this->arrayValues[2] = z;
}

template< typename T >
Point3<T>& Point3<T>::operator=(const Point3& point3)
{
    Tuple<3, T>::operator=(point3);

    return *this;
}

template< typename T >
T Point3<T>::getX() const
{
    return this->arrayValues[0];
}

template< typename T >
T Point3<T>::getY() const
{
    return this->arrayValues[1];
}

template< typename T >
T Point3<T>::getZ() const
{
    return this->arrayValues[2];
}

}

